package com.ct.application.sysuser.service;

import com.ct.application.commons.vo.StatusRequest;
import com.ct.application.sysuser.model.vo.SysUserDetailVO;
import com.ct.application.sysuser.model.vo.SysUserVO;
import com.ct.application.sysuser.request.*;
import com.ct.repository.commons.ITransfterBaseService;
import com.ct.repository.commons.PageUtils;

public interface ISystemUserService extends ITransfterBaseService {


    /**
     * 查询用户列表分页信息
     * @param sysUserSearchRequest
     * @return
     */
    PageUtils<SysUserDetailVO> findPage(SysUserSearchRequest sysUserSearchRequest);

    /**
     * 根据系统ID查询租户用户信息
     * @param sysUserSearchRequest
     * @return
     */
    PageUtils<SysUserDetailVO> findUserListBySystemId(SysUserSearchRequest sysUserSearchRequest);

    /**
     * 登录逻辑开发
     * @param sysUserRequest
     * @return
     */
    SysUserVO adminLogin(SysUserRequest sysUserRequest);

    /**
     * 根据ID查询用户信息
     * @param id
     * @return
     */
    SysUserDetailVO selectById(Long id);

    /**
     * 账号查询
     * @param account
     * @return
     */
    SysUserDetailVO selectByAccount(String account);

    /**
     * 根据ID删除用户信息
     * @param id
     * @return
     */
    Boolean deleteById(Long id);

    /**
     * 恢复删除
     * @param id
     * @return
     */
    Boolean recoverById(Long id);


    /**
     * 恢复删除
     * @param id
     * @return
     */
    Boolean removeById(Long id);

    /**
     * 保存用户
     * @param sysUserSaveRequest
     * @return
     */
    SysUserDetailVO saveSysUsers(SysUserSaveRequest sysUserSaveRequest);

    /**
     * 保存租户用户和系统的关系
     * @param sysUserSaveRequest
     * @return
     */
    SysUserDetailVO saveSystemSysUsers(SysUserSaveRequest sysUserSaveRequest);

    /**
     * 修改用户信息
     * @param sysUserUpdateRequest
     * @return
     */
    SysUserDetailVO updateSysUsers(SysUserUpdateRequest sysUserUpdateRequest);

    /**
     * 修改状态
     * @param statusRequest
     * @return
     */
    Boolean updateStatusSysUsers(StatusRequest statusRequest);

    /**
     * 修改密码
     * @param sysUserPasswordRequest
     * @return
     */
    Boolean updatePassword(SysUserPasswordRequest sysUserPasswordRequest);

    /**
     * 绑定角色
     * @param sysUserBindRolesRequest
     * @return
     */
    Boolean bindRolesSysUsers(SysUserBindRolesRequest sysUserBindRolesRequest);

    /**
     * 批量删除--物理删除
     * @param sysUserBatchRequest
     * @return
     */
    Boolean batchRemoves(SysUserBatchRequest sysUserBatchRequest);

    /**
     * 批量删除-逻辑删除
     * @param sysUserBatchRequest
     * @return
     */
    Boolean batchDels(SysUserBatchRequest sysUserBatchRequest);

    /**
     * 批量恢复
     * @param sysUserBatchRequest
     * @return
     */
    Boolean batchRecovers(SysUserBatchRequest sysUserBatchRequest);

    /**
     * 批量恢复
     * @param sysUserBatchRequest
     * @return
     */
    Boolean batchStatus(SysUserBatchRequest sysUserBatchRequest);

    /**
     * 批量禁止
     * @param sysUserBatchRequest
     * @return
     */
    Boolean batchForbiddens(SysUserBatchRequest sysUserBatchRequest);

}
